﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BHXH.Core.Domain;
using BHXH.Core.IService;
using Infragistics.Win.UltraWinGrid;
using FX.Core;
using Infragistics.Win;

namespace BHXH.Frm.FrmUserControl
{
    public partial class D02b_TS : UserControl
    {
        private readonly Ihs_D02bTS_dtService _hs_d02btsdtSrv;
        public IList<string> ID_D02bTS = new List<string>();
        private IList<string> _List_ID_Xoa;
        public IList<string> List_ID_Xoa
        {
            get { return _List_ID_Xoa; }
            set { _List_ID_Xoa = value; }
        }
        int Stt = 1;

        public D02b_TS()
        {
            InitializeComponent();
            _hs_d02btsdtSrv = IoC.Resolve<Ihs_D02bTS_dtService>();
            LoadGridview_D02b_TS();
        }

        public void LoadGridview_D02b_TS()
        {
            uG_D02bTS.DataSource = GetAll_D02bTS_Tab();
            uG_D02bTS.DisplayLayout.Override.ActiveCellAppearance.Reset();
            uG_D02bTS.DisplayLayout.Override.ActiveRowAppearance.Reset();
            this.uG_D02bTS.DisplayLayout.Bands[0].RowLayoutStyle = RowLayoutStyle.ColumnLayout;
            this.uG_D02bTS.DisplayLayout.Bands[0].Override.AllowRowLayoutLabelSizing = RowLayoutSizing.Both;
            this.uG_D02bTS.DisplayLayout.Bands[0].Columns["ID"].Hidden = true;
            this.uG_D02bTS.SyncWithCurrencyManager = false;
        }

        public DataTable GetAll_D02bTS_Tab()
        {
            IList<hs_D02bTS_dt> a = _hs_d02btsdtSrv.GetAll_hs_d02btsdt();
            DataTable table = new DataTable();
            table.Columns.Add("ID", typeof(int));
            table.Columns.Add("STT \n(1)", typeof(string));
            table.Columns.Add("Họ và tên \n(2)", typeof(string));
            table.Columns.Add("Mã số BHXH \n(3)", typeof(string));
            table.Columns.Add("Tiền lương, hoặc chênh lệch\nTiền lương \n(4)", typeof(double));
            table.Columns.Add("Truy thu từ tháng năm \n(5)", typeof(string));
            table.Columns.Add("Truy thu đến tháng năm \n(6)", typeof(string));
            table.Columns.Add("Số tháng truy thu \n(7)", typeof(string));
            table.Columns.Add("Tỷ lệ đóng BHXH(%) \n(8)", typeof(double));
            table.Columns.Add("Tỷ lệ đóng BHTN(%) \n(9)", typeof(double));
            table.Columns.Add("Tỷ lệ đóng BHYT(%) \n(10)", typeof(double));
            table.Columns.Add("Tiền lãi truy thu \n(Tổng thời gian chậm đóng)\n(11)", typeof(string));
            table.Columns.Add("Tiền lãi truy thu BHXH \n(12)", typeof(double));
            table.Columns.Add("Tiền lãi truy thu BHTN \n(13)", typeof(double));
            table.Columns.Add("Tiền lãi truy thu BHYT \n(14)", typeof(double));
            table.Columns.Add("Tiền lãi truy thu\n (Tổng cộng) \n(15)", typeof(string));
            table.Columns.Add("Ghi chú\n(16)", typeof(string));
            table.Columns.Add("Truy thu hết hạn dừng đóng\n vào quỹ hưu trí tự tuất, LĐ ở NN\n(17)", typeof(bool));

            if (a.Count > 0)
            {
                foreach (var item in a)
                {
                    table.Rows.Add(item.ID, Stt, item.CT02, item.CT03, double.Parse(item.CT04), item.CT05, item.CT06, item.CT07
                        , double.Parse(item.CT08), double.Parse(item.CT09), double.Parse(item.CT10), item.CT11, double.Parse(item.CT12)
                        , double.Parse(item.CT13), double.Parse(item.CT14), item.CT15, item.CT16, item.QUYHUUTRI);
                    Stt += 1;
                }
            }
            else
            {
                table.Rows.Add(null, Stt, null, null, null, null, null, null
                        , null, null, null, null, null, null, null, null, null, false);
                Stt += 1;
            }
            return table;
        }

        private void uG_D02bTS_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e)
        {
            
            for (int i = 0; i < e.Layout.Bands[0].Columns.Count; i++)
            {
                e.Layout.Bands[0].Columns[i].CellAppearance.TextHAlign = Infragistics.Win.HAlign.Center;
                if (i == 4 || i == 5 || i == 6 || i == 8 || i == 9 || i == 10 || i == 12 || i == 13 || i == 14)
                {
                    e.Layout.Bands[0].Summaries.Add(SummaryType.Sum, e.Layout.Bands[0].Columns[i]);
                    e.Layout.Override.FormulaErrorAppearance.BackColor = Color.Red;
                    e.Layout.Override.FormulaRowIndexSource = FormulaRowIndexSource.ListIndex;
                }
            }
        }

        private void uG_D02bTS_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Insert:
                    UltraGridRow row = this.uG_D02bTS.DisplayLayout.Bands[0].AddNew();
                    row.Cells[1].Value = Stt;
                    row.Cells[4].Value = 0;
                    row.Cells[5].Value = 0;
                    row.Cells[6].Value = 0;
                    row.Cells[8].Value = 0;
                    row.Cells[9].Value = 0;
                    row.Cells[10].Value = 0;
                    row.Cells[12].Value = 0;
                    row.Cells[13].Value = 0;
                    row.Cells[14].Value = 0;
                    row.Cells[17].Value = false;
                    Stt += 1;
                    break;
                case Keys.F11:
                    if (this.uG_D02bTS.Selected.Rows.Count > 0)
                    {
                        ID_D02bTS.Add(this.uG_D02bTS.ActiveRow.Cells["ID"].Value.ToString());
                        this.uG_D02bTS.DeleteSelectedRows();
                        List_ID_Xoa = ID_D02bTS;
                        Stt -= 1;
                    }
                    else
                    {
                        MessageBox.Show("Chọn dòng để xóa.");
                    }
                    break;
            }
        }

        public void Xoa_D02bTS()
        {
            bool Xoa_hs_d02btsdt = false;
            if (DialogResult.Yes == MessageBox.Show("Bạn có chắc chắn xóa không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
            {
                foreach (var item in ID_D02bTS)
                {
                    if (_hs_d02btsdtSrv.Delete_hs_d02btsdt(item) > 0)
                    {
                        Xoa_hs_d02btsdt = true;
                    }
                }
                if (Xoa_hs_d02btsdt == true)
                {
                    MessageBox.Show("Xóa thông tin thành công...");
                }
            }
        }

        public void Ghi_D02bTS()
        {
            string ID = "";
            bool update_hs_d02btsdt = false;
            bool add_hs_d02btsdt = false;
            hs_D02bTS_dt hs = new hs_D02bTS_dt();
            UltraGridBand band = this.uG_D02bTS.DisplayLayout.Bands[0];
            foreach (UltraGridRow row in band.GetRowEnumerator(GridRowType.DataRow))
            {
                UltraGridColumn column = this.uG_D02bTS.DisplayLayout.Bands[0].Columns[0];
                ID = row.Cells[column].Value.ToString();
                hs.CT01 = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[1]].Value.ToString();
                hs.CT02 = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[2]].Value.ToString();
                hs.CT03 = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[3]].Value.ToString();
                hs.CT04 = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[4]].Value.ToString();
                hs.CT05 = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[5]].Value.ToString();
                hs.CT06 = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[6]].Value.ToString();
                hs.CT07 = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[7]].Value.ToString();
                hs.CT08 = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[8]].Value.ToString();
                hs.CT09 = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[9]].Value.ToString();
                hs.CT10 = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[10]].Value.ToString();
                hs.CT11 = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[11]].Value.ToString();
                hs.CT12 = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[12]].Value.ToString();
                hs.CT13 = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[13]].Value.ToString();
                hs.CT14 = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[14]].Value.ToString();
                hs.CT15 = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[15]].Value.ToString();
                hs.CT16 = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[16]].Value.ToString();
                hs.QUYHUUTRI = row.Cells[this.uG_D02bTS.DisplayLayout.Bands[0].Columns[17]].Value.ToString();
                if (!ID.Equals(""))
                {
                    hs.ID = int.Parse(ID);
                    _hs_d02btsdtSrv.Update_hs_d02btsdt(hs);
                    update_hs_d02btsdt = true;
                }
                else
                {
                    if (_hs_d02btsdtSrv.Add_hs_d02btsdt(hs) == true)
                    {
                        add_hs_d02btsdt = true;
                    }
                }
            }
            if (update_hs_d02btsdt == true || add_hs_d02btsdt == true)
            {
                MessageBox.Show("Cập nhật thông tin thành công...");
            }
        }

        private void uG_D02bTS_CellChange(object sender, CellEventArgs e)
        {

        }
    }
}
